class Car {
  // 私有属性
  #wheel = 4;
  constructor(name, year) {
    this.name = name;
    this.year = year;
  }

  age() {
    const date = new Date();
    return `您的爱车：${this.name} 已经${date.getFullYear() - this.year}年`;
  }

  getWheelSize() {
    return `每辆小轿车都有${this.#wheel}个轮子`;
  }

  static msg() {
    console.log("汽车是人类的好朋友");
  }

  // 访问器
  get cyear() {
    return this.year;
  }

  // 设置器
  set cyear(value) {
    this.year = value;
  }

  // 设置器的调用不需要（），访问器和设置器不能和属性同名，否则会报错
}

{
  const daz = new Car("通用汽车", 2020);
  console.log(daz.age());
}

// 继承
class VWCar extends Car {
  constructor(name, year) {
    // 调用父类构造函数
    super(name, year);
    this.brand = "上汽";
  }

  age() {
    const date = new Date();
    return `您的爱车：${this.brand}${this.name} 已经${
      date.getFullYear() - this.year
    }年`;
  }
}

{
  const daz = new VWCar("大众id3", 2023);
  console.log(daz.age());

  daz.cyear = 2022;
  console.log(daz.age());
  console.log(daz.getWheelSize());

  // 类方法
  VWCar.msg();

  // daz.#wheel = 3; // 属性 "#wheel" 在类 "Car" 外部不可访问，因为它具有专用标识符
}
